package gov.pbc.nn.kjgl.archive.dao;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.bstek.dorado.uploader.DownloadFile;
import com.bstek.dorado.uploader.annotation.FileProvider;

import gov.pbc.nn.core.dao.AbstractHibernateDao;
import gov.pbc.nn.kjgl.entity.Archives;
import gov.pbc.nn.kjgl.entity.ArchivesContent;
import gov.pbc.nn.kjgl.entity.ProjectFile;

@Repository
public class ArchivesContentDao extends AbstractHibernateDao {

//	public void getAcontent(Page<ArchivesContent> page) {
//		DetachedCriteria query = DetachedCriteria.forClass(ArchivesContent.class);
//		query.add(Restrictions.or(Restrictions.eq("invalid", false), Restrictions.isNull("invalid")));
//		query.add(Restrictions.eq("deptId", ContextHolder.getLoginUser().getDepts().get(0).getId()));
//		this.pagingQuery(page, query);
//	}
//	/**
//	 * 得到档案文件名
//	 * @param id
//	 * @return
//	 */
//	public String getArchivesCountName(String id) {
//		String hql ="from ArchivesContent where invalid=false and archivesId=:id";
//		HashMap<String, Object> map = new HashMap<String, Object>();
//		map.put("id", id);
//		List<ArchivesContent> archives = this.query(hql, map);
//		if(archives.size()!=0){
//			return	archives.get(0).getContentFileId();
//		}
//		return null;
//	}
//	/**
//	 * 下载
//	 * @param parameter
//	 * @return
//	 * @throws IOException
//	 */
//	public DownloadFile download(Map<String, String> parameter)
//			throws IOException {
//		ArchivesContent pfile = this.getProjectFileById(parameter.get("id"));
//		String fileName = pfile.getContentFileId();
//		String path = pfile.getPathId();
//		InputStream stream = new FileInputStream(path + fileName);
//		DownloadFile file = new DownloadFile(fileName, stream);
//		return file;
//	}
//
//	/**
//	 * 根据ID差档案
//	 * @param id
//	 * @return
//	 */
//	private  ArchivesContent getProjectFileById(String id) {
//		String hql = "from ArchivesContent where archivesId=:id and invalid=false";
//		Map<String, Object> map = new HashMap<String, Object>();
//		map.put("id", id);
//		List<ArchivesContent> ls = this.query(hql, map);
//		if(ls.size()>0){
//			return ls.get(0);
//		}else{
//			return null;
//		}
//	}
	
	/**
	 * 得到Archives表中的 name属性 进行判断拼接
	 * @param archivesId
	 * @return
	 */
	public String getArchives(String archivesId) {
		String hql = "from Archives where invalid=false and id=:archivesId";
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("archivesId", archivesId);
		List<Archives> archives = this.query(hql, map);
		if(archives.size()!=0){
			if (archives.get(0).getParentId() == null) {
				return archives.get(0).getName();
			} else {
				return getArchivesName(archives.get(0).getParentId()) + "/" + archives.get(0).getName();
			}
		}else{
			return null;
		}
	}
	/**
	 * 得到 二级节点 名字
	 * @param parentId
	 * @return
	 */
	private String getArchivesName(String parentId) {
		String hql = "from Archives where id=:parentId and invalid=false";
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("parentId", parentId);
		return ((Archives) this.query(hql, map).get(0)).getName();
	}
}
